Enablement of multi-path routing in virtual edge systems

ABSTRACT

The technology disclosed herein enables multi-path routing in virtual edge systems of a virtual network environment. In a particular embodiment, a method provides establishing a connection for a communication with a client outside of the virtual network environment through a first virtual edge system of a plurality of virtual edge systems. The method further provides generating state information about the connection that indicates properties of the connection with respect to the first virtual edge system and updating a state information base of the first virtual edge system with the state information. Also, the method provides transferring the state information to one or more other virtual edge systems of the plurality of virtual edge systems and updating respective state information bases of the one or more other virtual edge systems with the state information.

RELATED APPLICATIONS

This application is a continuation of, and claims priority to, U.S.patent application Ser. No. 15/412,075, entitled “ENABLEMENT OFMULTI-PATH ROUTING IN VIRTUAL EDGE SYSTEMS,” filed Jan. 23, 2017, whichclaimed the benefit under 35 U.S.C. 119(a)-(d) to Foreign ApplicationSerial No. 201641039234 filed in India entitled “ENABLEMENT OFMULTI-PATH ROUTING IN VIRTUAL EDGE SYSTEMS”, filed on Nov. 17, 2016, byNicira, Inc., all of which are hereby incorporated by reference in theirentirety for all purposes.

TECHNICAL BACKGROUND

In item movement situations, adding paths over which items can be movedwill typically increase the throughput of those items. This is as truephysical items, such additional highway lanes for vehicles to use, as itis for data packets traversing a network. While a single network pathmay be limited to a given packet rate, whether that rate is caused byhardware limitations or congestion, that packet rate can be increased byproviding additional network paths over which packets can betransferred. Modern networking protocols even allow data packets thatare part of the same packet stream to be transferred over differentnetwork paths. A system at the receiving end of those packets is able toreassemble the packet stream properly even though the packetstransferred over different paths may not be received in order.

However, in some network arrangements, intermediate network elementsbetween a source and a destination of data packets may be configured toperform functions beyond simply routing the packets to a next hop in thenetwork path. Some of these functions may include stateful functions,such as a firewall function, that rely on connection state information(e.g., network addresses, port identifiers, etc.) when operating onpackets. Accordingly, an intermediate system that performs statefulfunctions can cause a bottle neck for packets in a multi-path routingsituation by virtue of the intermediate system requiring theaforementioned state information.

The bottleneck situation above is as much an issue for virtualizedintermediate systems as it is for physical intermediate systems. Forexample, many enterprise networks, or networks having similararchitectures, use edge systems to regulate traffic going into andcoming out of the network. Virtualizing these edge systems using virtualmachines, containers, or some other type of virtualized computingelement, allows multiple edge systems to be instantiated on one or morephysical host systems. However, even if multiple virtual edge systemsare instantiated on the same host system, the state information used byeach respective virtual edge systems remains independent just as thoughthose virtual edge systems were distinct physical elements. Thus, evenwhen using virtual edge systems to perform stateful functions on networktraffic, the multi-path bottleneck remains.

Overview

The technology disclosed herein enables multi-path routing in virtualedge systems of a virtual network environment. In a particularembodiment, a method provides establishing a connection for acommunication with a client outside of the virtual network environmentthrough a first virtual edge system of a plurality of virtual edgesystems. The method further provides generating state information aboutthe connection that indicates properties of the connection with respectto the first virtual edge system and updating a state information baseof the first virtual edge system with the state information. Also, themethod provides transferring the state information to one or more othervirtual edge systems of the plurality of virtual edge systems andupdating respective state information bases of the one or more othervirtual edge systems with the state information.

In some embodiments, the method provides handling traffic directed tothe client for the communication through the one or more other virtualedge systems based on the state information in the same manner as thefirst virtual edge system would. In these embodiments, a virtual routermay direct the traffic from a virtual application server to the firstvirtual edge system and the one or more other virtual edge systems forhandling.

In some embodiments, the method provides using the state information toinitiate a handshake between each of the one or more other virtual edgesystems and the client to establish respective connections with theclient through each of the one or more other virtual edge systems androuting traffic for the communication through the one or more othervirtual edge systems to the client over the respective connections.

In some embodiments, the connection comprises a Transmission ControlProtocol (TCP) connection. In these embodiments, establishing the TCPconnection may comprise, in the first virtual edge system receiving aTCP synchronize (SYN) message from the client that indicates a sourceport and a destination port, wherein the source port and the destinationport are included in the state information, responding to the TCP SYNmessage with a TCP SYN-acknowledge (ACK) message, and receiving a TCPACK message from the client in response to the TCP SYN-ACK message.

In some embodiments, transferring the state information comprisestransferring the state information to a controller of the plurality ofvirtual edge systems and, in the controller, identifying the one or morevirtual edge systems from the plurality of virtual edge systems asvirtual edge systems configured for multi-path routing and transferringthe state information from the controller to the one or more othervirtual edge systems. In these embodiments, the controller comprises avirtual machine separate from the plurality of virtual edge systems.

In some embodiments, the state information is transferred over a controlplane channel employed by the controller and the plurality of virtualedge devices.

In some embodiments, the first virtual edge system and the one or moreother virtual edge systems include respective firewalls that identifytraffic for the communication from the state information and allow thetraffic to pass.

In another embodiment, a system hosting a first virtual edge system isprovided. The system includes one or more computer readable storagemedia and a processing system operatively coupled with the one or morecomputer readable storage media. Program instructions stored on the oneor more computer readable storage media, when read and executed by theprocessing system, direct the processing system to establish aconnection for a communication with a client outside of the virtualnetwork environment through the first virtual edge system of a pluralityof virtual edge systems. The program instructions further direct theprocessing system to generate state information about the connectionthat indicates properties of the connection with respect to the firstvirtual edge system and update a state information base of the firstvirtual edge system with the state information. Also, the programinstructions direct the processing system to transfer the stateinformation to one or more other virtual edge systems of the pluralityof virtual edge systems, wherein the one or more virtual edge systemsupdate their respective state information bases with the stateinformation.

BRIEF DESCRIPTION OF THE DRAWINGS

The following description and associated figures teach the best mode ofthe invention. For the purpose of teaching inventive principles, someconventional aspects of the best mode may be simplified or omitted. Thefollowing claims specify the scope of the invention. Note that someaspects of the best mode may not fall within the scope of the inventionas specified by the claims. Thus, those skilled in the art willappreciate variations from the best mode that fall within the scope ofthe invention. Those skilled in the art will appreciate that thefeatures described below can be combined in various ways to formmultiple variations of the invention. As a result, the invention is notlimited to the specific examples described below, but only by the claimsand their equivalents.

FIG. 1 illustrates a computing environment to enable multi-path routingin virtual edge systems.

FIG. 2 illustrates a method of operating the computing environment toenable multi-path routing in virtual edge systems.

FIG. 3 illustrates another computing environment to enable multi-pathrouting in virtual edge systems.

FIG. 4 illustrates a logical arrangement of the computing environment toenable multi-path routing in virtual edge systems.

FIG. 5 illustrates an operational scenario of the other computingenvironment to enable multi-path routing in virtual edge systemsaccording to one implementation.

FIG. 6 illustrates another operational scenario of the other computingenvironment to enable multi-path routing in virtual edge systemsaccording to one implementation.

FIG. 7 illustrates a computing architecture used to enable multi-pathrouting in virtual edge systems according to one implementation.

DETAILED DESCRIPTION

FIG. 1 illustrates computing environment 100 for enabling multi-pathrouting in virtual edge systems. Computing environment 100 includesvirtual edge systems 101.1-N, client system 102, and virtual destinationsystem 103. Virtual edge systems 101.1-N and virtual destination system103 are virtual elements included in virtual network environment 104.The virtual elements of virtual environment 104 are implemented onphysical host computing systems through the execution of a hypervisor,or some other software element having similar functionality, thereon.Virtual edges systems 101.1-N are expressed as such since the multi-pathrouting described herein can be performed using any number of two ormore virtual edge systems. Similarly, while only one destination system103 is shown, any number of systems of serving various purposes may belocated within virtual network environment 104. Communication links111-116 may include some combination of virtual and physicalcommunication links depending on how the virtual elements of virtualnetwork environment 104 are arranged on physical host computing systems.

In operation, all communication traffic going into or out of virtualnetwork environment 104 must pass through one of virtual edge systems101.1-N. Virtual edge systems 101.1-N are therefore able to process thecommunication traffic entering and exiting virtual network environment104. The processing may allow virtual edge systems 101.1-N to handletraffic in more robust ways than simply passing the traffic through. Forinstance, edge systems 101.1-N include respective state informationbases 121.1-N. State information bases 121.1-N store state informationrelevant to each virtual edges system's handling of communicationtraffic. Specifically, the state information is used for statefulservices provided by virtual edge systems 101.1-N (i.e., services thatrely on previously gathered or created information to know how trafficshould be handled). A common example of a stateful service is a firewallservice that allows traffic to pass or denies that traffic based oninformation in a state information base (e.g., the state informationbase may indicate network addresses to or from which traffic should beblocked or allowed to pass). With each state information base 121.1-Nbeing independent of one another, each virtual edge system 101.1-N maybehave differently when providing stateful services based on the stateinformation included in their respective state information base. Using afirewall service as an example, communication traffic that may beallowed to pass through one virtual edge system based on that system'sstate information base may not be allowed to pass through anothervirtual edges system based on that system's state information base.Thus, routing communications through multiple virtual edge systems toimplement multi-path routing may be thwarted due to differing stateinformation bases.

FIG. 2 illustrates method 200 of operating computing environment 100 toenable multi-path routing in virtual edge systems. Method 200 providesestablishing a connection for a communication with client system 102through one of virtual edge systems 101.1-N (201). Client system 102 islocated outside of virtual network environment 104 and, in this example,is attempting to access virtual destination system 103 through virtualedge system 101.1. In some cases, client system 102 may connect withvirtual edge system 101.1 over the Internet, although other types ofnetworks may also be involved. The connection establishment may comprisethe three-step handshake defined by the Transmission Control Protocol(TCP) of the Internet Protocol (IP) suite of protocols. However, othernetworking protocols and/or other manners of connection establishmentmay also be used.

Method 200 further provides generating state information about theconnection that indicates properties of the connection with respect tovirtual edge system 101.1 (202). The state information includes any typeof information that may be used by a virtual edge system whendetermining how to route communications. For example, the stateinformation may include a source port (i.e., a port of client system102), a destination port (i.e., a port of virtual edge system 101.1), anetwork address of client system 102, a network address of virtual edgesystem 101.1, a network address of virtual destination system 103, orsome other type of information describing the connection.

After generating the state information, method 200 provides updatingstate information base 121.1 of virtual edge system 101.1 with thegenerated state information (203). State information base 121.1 alongwith the other state information bases 121.2-N may comprise any type ofdata structure (e.g., table, linked list, etc.) that can be accessed byits respective virtual edge system 101.1-N. When adding the stateinformation to state information base 121.1, the state information maybe ordered (e.g., indexed) within state information base 121.1 such thatit can more readily be found by virtual edge system 101.1 when accessingstate information base 121.1. In addition to updating state informationbase 121.1 with the state information, method 200 provides transferringthe state information to one or more of the other virtual edge systems121.2-N (204). That is, the state information may be transferred to allof the other virtual edge systems or some subset of the other virtualedge systems. A determination as to which virtual edge systems the stateinformation is transferred may be made by virtual edge system 101.1, bya virtual system that controls virtual edge systems 101.1-N, or by someother system. The determination may be made based on the number of pathsdesired for multi-path routing (with one virtual edge system for eachpath), based on the communication load being handled by each virtualedge system (e.g., the state information may not be transferred tocommunication systems already under heavy load), based on thearrangement of virtual edge systems 101.1-N on host computing systems,or based on some other factor. The state information may be transferreddirectly from virtual edge system 101.1 to the other virtual edgesystems or may be transferred to another system (e.g., a virtual systemthat controls virtual edge systems 101.1-N) before being passed on tothe other virtual edge systems.

Once the state information is received by the other ones of virtual edgesystems 101.2-N, method 200 provides updating respective stateinformation bases 121.2-N of those respective other virtual edge systemswith the state information (205). State information bases 121.2-N areupdated in the same manner that virtual edge system 101.1 used to updatestate information base 121.1. After the respective ones of stateinformation bases 121.2-N are updated to include the state information,the respective ones of the other virtual edge systems 101.2-N are awareof the connection with client system 102 in the same way virtual edgesystem 101.1 is aware of the connection and can route communications forthe connection with client system 102 in the same manner. For example,if virtual edge system 102.2 is one of the virtual edge systems thatreceived the state information and updated state information base 121.2accordingly, then virtual edge system will route communication trafficdirected to client system 102 (e.g., traffic from virtual destinationsystem 103) in the same manner as the traffic would be routed by virtualedge system 101.1. As such, multi-path routing for the connection withclient system 102 can be enabled through all virtual edge systems101.1-N that have updated their state information bases with the stateinformation.

Referring back to FIG. 1, virtual edge systems 101.1-N comprise networkedge systems implemented as virtual machines, containers, or some othertype of virtualized computing element, executing on one or more hostcomputing systems. Virtual destination system 103 similarly executes asa virtualized computing element on a host computing system that may ormay not be a host computing system that is also executing one or more ofvirtual edge systems 101.1-N. The host computing systems includeprocessing circuitry and network communication interfaces. The hostcomputing systems may further include other components such as a userinterface, router, server, data storage system, and power supply.

Client system 102 also comprises processing circuitry and a computinginterface. Client system 102 may further include other components suchas a user interface, router, server, data storage system, and powersupply. Client system 102 may reside in a single device or may bedistributed across multiple devices. Client system 102 may be a userdevice, such as a personal computer, telephone, tablet, etc., or may besome other type of computing system. In some examples, client system 102may be implemented as a virtual machine executing on a host computingsystem similar to those described above. Although, in those examples,client system 102 would still be considered to be external to virtualnetwork environment 104.

FIG. 3 illustrates computing environment 300 for enabling multi-pathrouting in virtual edge systems. Computing environment 300 includes hostcomputing system 321, host computing system 331, communications router341, communication network 361, and client system 351. In this example,communications router 341 comprises a layer 3 (network layer) router inthe Open Systems Interconnection model (OSI model) that routescommunications to/from and between host computing systems 321 and 331.Communication router 341 is further configured to exchangecommunications with other systems and devices over communication network361. Communication network 361 may include the Internet, one or morelocal area networks, and/or one or more wide area networks. While shownseparately, communication router 341 may be considered part ofcommunication network 361 in some examples. Client 351 is able tocommunicate with host computing systems 321 and 331 via communicationnetwork 361 and communication router 341.

In this example, host computing system 321 executes hypervisor 323 toallocate physical computing resources 322 among virtual machines324-327. Likewise, host computing system 331 executes hypervisor 333 toallocate physical computing resources 332 among virtual machines334-337. Physical computing resources 322 and 332 may include processingresources (e.g., CPU time/cores), memory space, network interfaces, userinterfaces, or any other type of resource that a physical computingsystem may include. Each of virtual machines 324-327 and 334-337 includea virtual element that makes up a virtual environment. Those componentsinclude virtual edge systems 301-304, edge system controller 305, and athree-tiered application system comprising a web tier system 306, anapplication tier system 307, and a database tier system 308. It is thatthree-tiered application that client 351 will attempt to access in theexamples below. An instance of a virtual router 309 is implemented ineach of hypervisors 323 and 333. Virtual router 309 may comprise adistributed logical router (DLR) or may comprise some other componentfor routing communications between virtual machines, which could beimplemented on a common host computing system.

It should be understood that the distribution of virtual machines evenacross two host computing systems, as shown in FIG. 3, is merelyexemplary. The eight virtual machines shown may instead be implementedon any number of host computing systems from one to eight. Likewise, thehost computing systems 321 and 331 could host additional virtualmachines that are not involved in this example.

FIG. 4 illustrates logical arrangement 400 of computing environment 300to enable multi-path routing in virtual edge systems. Specifically,logical arrangement 400 illustrates a network topology of virtualelements 301-308 as though virtual elements 301-308 were physicalcomputing elements networked together. Because, as is the nature ofvirtual machines, the virtual elements 301-308 operate as though theyare executing directly on physical computing systems with hypervisors322 and 332 emulating computing resources which allows virtual elements301-308 to do so. Edge system controller 305 creates a control plane 401through which virtual edge systems 301-304 can be controlled withoutedge system controller 305 being in a data communication path.

Virtual router 309 is shown as a router handling data communicationtraffic between virtual edge systems 301 and three-tiered applicationsystems 306-308. Communications exchanged between elements 301-304 and306-307 are handled by virtual router 309. For example, since virtualedge system 302 and web tier system 306 are located on the same hostcomputing system 321, virtual router 309 handles the “routing” ofnetwork communications between the two over virtual communication linkswhile the communications remain within host computing system 321. Inother examples where the two systems are located on different hostcomputing systems, virtual router 309 handles the transfer of thosecommunications over physical network links between the host computingsystems since instances of virtual router 309 are included in both ofhypervisors 322 and 332 to effectively create a single router.

FIG. 5 illustrates an operational scenario 500 of computing environment300 to enable multi-path routing in virtual edge systems in an exampleimplementation. Communication network 361 and communications router 341are omitted from scenario 500 as their functionality remains consistentwith that typically found in the art. Accordingly, it should beunderstood that communications between client system 351 and any ofvirtual edge systems 301-304 pass through communication network 361 andcommunication router 341. In some examples, communication router 341 mayinclude logic to determine which virtual edge system 301-304 shouldreceive initial communications from a client system located outside ofthe virtual environment. For instance, the logic may include loadbalancing logic or may determine a virtual edge system in some othermanner.

Client system 351 comprises a user system executing a web browserapplication. In this case, a user of client system 351 directs clientsystem 351, via the web browser, to access a web application provided bythree-tiered application elements 306-308. Web tier system 306 is thespecific system that will exchange communications with client system 351to provide client system 351 with the web application. Web tier system306, application tier system 307, and database tier system 308communicate with one another so that web tier system 306 can provide theweb application. When client system 351 initially reaches out to webtier system 306, the communications from client system 351 are routedinto the virtual environment through virtual edge system 301. As notedabove, router 341 or some other not-shown element may determine which ofvirtual edge systems 301-304 the initial communications from clientsystem 351 are routed.

At step 1 of operational scenario 500, the initial communications withvirtual edge system 301 comprise messages that perform a TCP handshakebetween client system 351 and virtual edge system 301. An example of athree-way TCP handshake that may be performed in this instance can befound in FIG. 6 below. Once the TCP handshake has completed, at step 2virtual edge system 301 generates state information about the TCPconnection that has been established with client system 351 and updatesvirtual edge system 301's stat information base with that stateinformation. The information includes any information necessary forvirtual edge system 301 to identify packet communications beingexchanged with client system 351 through virtual edge system 301, suchas port information, IP addresses, and the like. Any stateful functionthat is performed by virtual edge system 301 then uses the stateinformation in the state information base to identify communicationsexchanged between web tier system 306 and client system 351 and handlethem accordingly. For example, a firewall function of virtual edgesystem 301 may use the state information to identify communicationsexchanged with client system 351 and allow those communications to passthrough virtual edge system 301.

To enable multi-path routing for communications transferred to clientsystem 351, virtual edge system 301 transfers the state informationgenerated above to edge system controller 305 at step 3. Upon receivingthe state information, at step 4 edge system controller 305 identifieswhich of virtual edge systems 302-304 should be used for multi-pathrouting of communications to client system 351. In some cases, edgesystem controller 305 may identify all of the other virtual edge systemswhile, in other cases, only a subset of the other virtual edge systemsis identified. This example results in edge system controller 305identifying virtual edge systems 302 and 303. Virtual edge system 304may be excluded due to virtual edge system 304 being overloaded, beingincompatible with multi-path routing, or for some other reason.

At step 5 a, edge system controller 305 transfers the state informationto virtual edge systems 302 and 303 over control plane 401. Whentransferring the state information, edge system controller 305 mayfurther include instructions on what each virtual edge system should dowith the state information or virtual edge systems 302 and 303 may bepreconfigured to handle state information received form edge systemcontroller 305 (i.e., preconfigured to update their respective stateinformation bases with received state information for multi-pathrouting). At substantially the same time, edge system controller 305notifies virtual router 309 that multi-path routing is enabled invirtual edge systems 301. That notification may further provide thestate information to virtual router 309 so that virtual router 309 canidentify which packets are subject to the multi-path routing (i.e.,packets for the connection with client system 351). Although, virtualrouter 309 may identify those packets in some other manner.

Additionally, at step 5 b, edge system controller 305 informs virtualrouter 309 about the edge systems that were identified to receive thestate information and also may receive the state information itself orsome other information necessary for virtual router 309 to identifytraffic intended for the connection with client system 351. Edge systemcontroller 305 may communicate directly with virtual router 309 toconvey the state information or may communicate through some otherelement, such as a virtual machine implemented to control virtual router309 or some other element within hypervisors 323 and/or 333. Regardlessof how virtual router 309 is informed, after step 5 b, virtual router309 knows that it can route traffic for the connection with clientsystem 351 through any one of virtual edge systems 301-303.

Upon receiving the state information, at step 6 virtual edge systems 302and 303 both update their respective state information bases with thestate information. Accordingly, after updating, the state informationbases of virtual edge systems 301, 302, and 303 all contain the samestate information about the connection that client system 351established with virtual edge system 301. Thus, as far as virtual edgesystems 302 and 303 are concerned, the connection could have beenoriginally established with them instead.

The sharing of state information for the connection with client system351 effectively creates a common data plane, data plane 501, for each ofvirtual edge systems 301-303. Sharing data plane 501 allows data sentthrough any system of data plane 501 to handle that data in the sameway. Thus, when web tier system 306 transfers data packets to clientsystem 351 to provide client system 351 with the web applicationrequested by client system 351, those data packets can be routed byvirtual router 309 to any of virtual edge systems 301-303. Three pathsbetween web tier system 306 and client system 351 are thereforeavailable in a multi-path routing scheme. In this example, an equal costmulti-path (ECMP) routing scheme may be used by virtual router 309 todistribute communications among virtual edge systems 301-303, although,other routing schemes may be used instead. In ECMP, multiple next-hopaddresses for the same destination are provided in a routing table andeach next-hop address provides a route with equal cost to that of routesprovided by the other addresses. The addresses of virtual edge systems301-303 would be the next-hop addresses used for ECMP in this example.

FIG. 6 illustrates an operational scenario 600 of computing environment300 to enable multi-path routing in virtual edge systems in anotherexample implementation. Operational scenario 600 focuses on messagesexchanged between virtual edge systems 301-303 and client system 351.Steps 1-3 of scenario 600 provide an example of the TCP handshakeperformed in step 1 of scenario 500. In particular, to initiate a TCPhandshake, client system 351 in scenario 600 transfers a TCP SYN messageto virtual edge system 301 at step 1. The TCP SYN message includessource port XX (i.e., the TCP communication port at client system 351)and destination port YY (i.e., the TCP communication port at virtualedge system 301). Other information may further be gleaned from the TCPSYN message, such as the IP address of client system 351. Virtual edgesystem 301 then acknowledges receipt of the TCP SYN message bytransferring a TCP SYN-ACK message back to client system 351 at step 2.Client system 351 then acknowledges the TCP SYN-ACK message at step 3 bysending a TCP ACK message to virtual edge system 301. Steps 1-3 ofscenario 600 therefore complete a three-step TCP handshake establishinga TCP connection between client system 351 and virtual edge system 301.

Connection state information 602 is generated by virtual edge system 301to include information describing the newly established connection. Inthis example, connection state information 602 includes the source portXX, the destination port YY, and the IP address of client system 351.Connection state information 602 is stored in virtual edge system 301'sstate information base, passed to virtual edge systems 302 and 303, andstored in the respective state information bases of virtual edge systems302 and 303 in accordance with steps 2-6 of scenario 500 discussedabove. Unlike scenario 500, where virtual edge systems 301-303 can allstart receiving traffic at step 7 for the connection with client system351 upon updating their respective state information bases, scenario 600performs additional steps 4-5.

Specifically, at step 4 each of virtual edge systems 302 and 303initiates a three-step TCP handshake by transferring a TCP SYN messagewith the source port being YY and the destination port being XX, asvirtual edge systems 302 and 303 are the sources of these subsequenthandshakes and client system 351 is the destination. Client system 351responds to those TCP SYN messages by transferring a TCP SYN-ACK messageback to each of virtual edge systems 302 and 303 at step 5, which inturn transfer TCP ACK messages to client system 351 in response at step6 to complete the three-step TCP handshakes. Client system 351 now hasseparate TCP connections to each of virtual edge systems 301-303.

Each of the level 3 and level 4 combinations for the three connectionsare unique after the handshakes are performed. In particular, the level3 IP addresses for each of virtual edge systems 301-303 are different,which makes the level 3 component of the connections different in atleast that manner. However, once level 3 packet communications arede-capsulated by client system 351 for each of the connections, thelevel 4 characteristics of the communications on each connection willindicate the same TCP socket since they each use the same ports XX andYY. Thus, when packet communications are transferred through any ofvirtual edge systems 301-303 to client system 351, akin to that shown instep 7 of scenario 500, client system 351 will associate thecommunications with the same TCP connection due to the communicationshaving the same socket.

FIG. 7 illustrates a computing system 700 to enable multi-path routingin virtual edge systems. Computing system 700 is representative of anycomputing system or systems with which the various operationalarchitectures, processes, scenarios, and sequences disclosed hereinenable multi-path routing in virtual edge systems. Computing system 700is an example of a computing system for implementing virtual edgesystems 101.1-N or virtual edge systems 301-304, although other examplesmay exist. Computing system 700 comprises communication interface 701,user interface 702, and processing system 703. Processing system 703 islinked to communication interface 701 and user interface 702. Processingsystem 703 includes processing circuitry 705 and memory device 706 thatstores operating software 707. Computing system 700 may include otherwell-known components such as a battery and enclosure that are not shownfor clarity.

Communication interface 701 comprises components that communicate overcommunication links, such as network cards, ports, radio frequency (RF),processing circuitry and software, or some other communication devices.Communication interface 701 may be configured to communicate overmetallic, wireless, or optical links. Communication interface 701 may beconfigured to use Time Division Multiplex (TDM), Internet Protocol (IP),Ethernet, optical networking, wireless protocols, communicationsignaling, or some other communication format—including combinationsthereof.

User interface 702 comprises components that interact with a user toreceive user inputs and to present media and/or information. Userinterface 702 may include a speaker, microphone, buttons, lights,display screen, touch screen, touch pad, scroll wheel, communicationport, or some other user input/output apparatus—including combinationsthereof. User interface 702 may be omitted in some examples.

Processing circuitry 705 comprises microprocessor and other circuitrythat retrieves and executes operating software 707 from memory device706. Memory device 706 may include volatile and nonvolatile, removableand non-removable media implemented in any method or technology forstorage of information, such as computer readable instructions, datastructures, program modules, or other data. Memory device 706 may beimplemented as a single storage device, but may also be implementedacross multiple storage devices or sub-systems. Memory device 706 maycomprise additional elements, such as a controller to read operatingsoftware 707. Examples of storage media include random access memory,read only memory, magnetic disks, optical disks, and flash memory, aswell as any combination or variation thereof, or any other type ofstorage media. In some implementations, the storage media may be anon-transitory storage media. In some instances, at least a portion ofthe storage media may be transitory. It should be understood that in nocase is the storage media a propagated signal.

Processing circuitry 705 is typically mounted on a circuit board thatmay also hold memory device 706 and portions of communication interface701 and user interface 702. Operating software 707 comprises computerprograms, firmware, or some other form of machine-readable programinstructions. Operating software 707 includes connection establishmentmodule 708, state information module 709, and control plane module 709,although any number of software modules within the application mayprovide the same operation. Operating software 707 may further includean operating system, utilities, drivers, network interfaces,applications, or some other type of software. When executed byprocessing circuitry 705, operating software 707 directs processingsystem 703 to operate computing system 700 as described herein.

In a particular example, modules 708-709 comprise a first virtual edgesystem of a plurality of virtual edge systems. Connection establishmentmodule 708 directs processing system 703 to establish a connection for acommunication with a client outside of a virtual network environmentthrough the first virtual edge system. State information module 709directs processing system 703 to generate state information about theconnection that indicates properties of the connection with respect tothe first virtual edge system and to update a state information base ofthe first virtual edge system with the state information. Control planemodule 709 directs processing system 703 to transfer the stateinformation to one or more other virtual edge systems of the pluralityof virtual edge systems. The state information modules of those one ormore other virtual edge systems then update their respective stateinformation bases with the state information.

The included descriptions and figures depict specific implementations toteach those skilled in the art how to make and use the best mode. Forthe purpose of teaching inventive principles, some conventional aspectshave been simplified or omitted. Those skilled in the art willappreciate variations from these implementations that fall within thescope of the invention. Those skilled in the art will also appreciatethat the features described above can be combined in various ways toform multiple implementations. As a result, the invention is not limitedto the specific implementations described above, but only by the claimsand their equivalents.

What is claimed is:
 1. A method of enabling multi-path routing instateful services of a virtual network environment, the methodcomprising: establishing a first connection between a first edge and aclient, wherein the first edge provides a first stateful service of aplurality of stateful services and wherein the first edge regulatescommunication traffic going into and coming out of the virtual networkenvironment; after generating state information about the connection,transferring the state information to a second edge that provides thestateful service; in the second edge, using the state information toinitiate establishment of a second connection with the client; androuting traffic for a communication to the client through the first edgeand the second edge over the first connection and the second connection.2. The method of claim 1, wherein the state information includes asource port, a destination port, and a network address of the client. 3.The method of claim 1, wherein the first connection and the secondconnection are established for a communication with a destination withinthe virtual network environment, wherein the destination comprises avirtual application server, and wherein routing the traffic is performedby a virtual router.
 4. The method of claim 1, wherein using the stateinformation to initiate the establishment of the second connectioncomprises: using the state information to initiate a handshake betweenthe second edge and the client.
 5. The method of claim 1, wherein thefirst connection and the second connection comprise Transmission ControlProtocol (TCP) connections.
 6. The method of claim 5, whereinestablishing the first connection comprises, in the first edge:receiving a TCP synchronize (SYN) message from the client that indicatesa source port and a destination port, wherein the source port and thedestination port are included in the state information; responding tothe TCP SYN message with a TCP SYN-acknowledge (ACK) message; andreceiving a TCP ACK message from the client in response to the TCPSYN-ACK message.
 7. The method of claim 1, wherein transferring thestate information comprises: transferring the state information to acontroller of a plurality of edges including the first edge and thesecond edge; in the controller, identifying the second edge from theplurality of edges as an edge configured for multi-path routing; andtransferring the state information from the controller to the secondedge.
 8. The method of claim 7, wherein the state information istransferred over a control plane channel employed by the controller andthe first and second edges.
 9. The method of claim 1, wherein thetraffic comprises packets transferred from a destination within thevirtual network environment in response to a request received from theclient over the first connection.
 10. The method of claim 1, wherein thefirst edge and the second edge comprise respective firewalls thatidentify the traffic from the state information and allow the traffic topass.
 11. A system hosting a first edge system of a plurality of edgesystems of a virtual network environment to enable multi-path routing,the system comprising: one or more computer readable storage media; aprocessing system operatively coupled with the one or more computerreadable storage media; and program instructions stored on the one ormore computer readable storage media that, when read and executed by theprocessing system, direct the processing system to: establish a firstconnection between a first edge and a client, wherein the first edgeprovides a first stateful service of a plurality of stateful servicesand wherein the first edge regulates communication traffic going intoand coming out of the virtual network environment; after stateinformation about the connection is generated, transfer the stateinformation to a second edge that provides the stateful service, whereinthe second edge uses the state information to initiate establishment ofa second connection with the client; and route traffic for acommunication to the client through the first edge over the firstconnection, wherein the traffic is also routed through the second edgeover the second connection.
 12. The system of claim 11, wherein thestate information includes a source port, a destination port, and anetwork address of the client.
 13. The system of claim 11, wherein thefirst connection and the second connection are established for acommunication with a destination within the virtual network environment,wherein the destination comprises a virtual application server, andwherein routing the traffic is performed by a virtual router.
 14. Thesystem of claim 11, wherein to use the state information to initiate theestablishment of the second connection, the second edge: uses the stateinformation to initiate a handshake between the second edge and theclient.
 15. The system of claim 11, wherein the first connection and thesecond connection comprise Transmission Control Protocol (TCP)connections.
 16. The system of claim 15, wherein to establish the firstconnection the program instructions direct the processing system to:receive a TCP synchronize (SYN) message from the client that indicates asource port and a destination port, wherein the source port and thedestination port are included in the state information; respond to theTCP SYN message with a TCP SYN-acknowledge (ACK) message; and receive aTCP ACK message from the client in response to the TCP SYN-ACK message.17. The system of claim 11, wherein to transfer the state informationthe program instructions direct the processing system to: transfer thestate information to a controller of a plurality of edges including thefirst edge and the second edge; and wherein the controller identifiesthe second edge from the plurality of edges as an edge configured formulti-path routing and transfers the state information from thecontroller to the second edge.
 18. The system of claim 17, wherein thestate information is transferred over a control plane channel employedby the controller and the first and second edges.
 19. The system ofclaim 11, wherein the traffic comprises packets transferred from adestination within the virtual network environment in response to arequest received from the client over the first connection.
 20. Thesystem of claim 11, wherein the first edge and the second edge includerespective firewalls that identify the traffic from the stateinformation and allow the traffic to pass.